home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / GFA basic training.adf / Copper / USER_COPPER I.LST < prev    next >
File List  |  1989-06-01  |  2KB  |  81 lines

  1. ' User-Copper  I
  2. '
  3. @usercop_laenge
  4. @memory_copperbereit
  5. @user_copper_an
  6. '
  7. REPEAT
  8.   PRINT "Bunt nicht?",
  9. UNTIL MOUSEK
  10. '
  11. @user_copper_aus
  12. EDIT
  13. '
  14. > PROCEDURE datas
  15.   ' Farbe Schwarz ab Screenzeile 0
  16.   DATA $0180,$0000
  17.   DATA $7701,$fffe
  18.   ' Farbe Hellrot ab Zeile $77 (=119)
  19.   DATA $0180,$0f00
  20.   DATA $8001,$fffe
  21.   ' Farbe Hellgruen ab Zeile $80 (=128)
  22.   DATA $0180,$00f0
  23.   DATA $8501,$fffe
  24.   ' Farbe Hellblau ab Zeile $85 (=133)
  25.   DATA $0180,$000f
  26.   DATA $9001,$fffe
  27.   ' Farbe Purple ab Zeile $90 (=144)
  28.   DATA $0180,$0f0f
  29.   DATA $a001,$fffe
  30.   ' Wieder Schwarz ab Zeile $a0 (=160)
  31.   DATA $0180,$0000
  32.   DATA $FFFF
  33. RETURN
  34. '
  35. > PROCEDURE usercop_laenge
  36.   DO
  37.     READ x%
  38.     EXIT IF x%=&HFFFF
  39.     INC anz&    ! Anzahl Worte
  40.   LOOP
  41.   MUL anz&,2    ! Anzahl Bytes
  42.   RESTORE
  43. RETURN
  44. > PROCEDURE memory_copperbereit
  45.   mem&=76+anz&               ! 76 Bytes werden noch vom System übernommen
  46.   u_copadr%=MALLOC(mem&,2)   ! Chip-Memory belegen in errechneter Größe
  47.   neu_copadr%=u_copadr%
  48.   '
  49.   altcop%=LPEEK(_GfxBase+50) ! Copper-Automatik-Vector relativ zu GFXBASE retten
  50.   startcop%=altcop%+84       ! Anfang der Daten die uebernommen werden müssen
  51.   '        Startliste des Systems Kopieren
  52.   BMOVE startcop%,neu_copadr%,60
  53.   '        Unsere Liste
  54.   CLR zeiger&,x%
  55.   RESTORE
  56.   '        Unseren Adress-Zeiger erhoehen
  57.   ADD neu_copadr%,60         ! 60 sind schon drin, darum um 60 erhöhen
  58.   '
  59.   count%=neu_copadr%+4       ! Bewegungszeiger setzen
  60.   '
  61.   DO
  62.     READ x%
  63.     EXIT IF x%=&HFFFF
  64.     DPOKE neu_copadr%+zeiger&,x%
  65.     ADD zeiger&,2
  66.   LOOP
  67.   '        End Liste des Systems Kopieren
  68.   ADD startcop%,60
  69.   ADD neu_copadr%,anz&
  70.   BMOVE startcop%,neu_copadr%,16
  71. RETURN
  72. > PROCEDURE user_copper_an
  73.   VSYNC                         ! Warten auf Vblank, damit Copper nicht ausliest
  74.   LONG{_GfxBase+50}=u_copadr%   ! (Unsere) Adresse in den Auto-Vector schreiben
  75. RETURN
  76. > PROCEDURE user_copper_aus
  77.   VSYNC                        ! Warten, damit Copper nicht stört
  78.   LONG{_GfxBase+50}=altcop%    ! System-Vector zurückschreiben (Orginal Datenliste)
  79.   x%=MFREE(u_copadr%,mem&)
  80. RETURN
  81.